-- 获取限流的 Redis key
local key = KEYS[1]

-- 获取注解上标注的限流次数（每秒允许的请求数）
local limit = tonumber(ARGV[1])

-- 获取过期时间（秒）
local expire = ARGV[2]

-- 获取当前桶中令牌的数量，如果不存在则为 0
local tokens = tonumber(redis.call('get', key) or "0")

-- 如果桶中令牌数量加 1 后超过限制，则返回 0 表示请求被拒绝
if tokens + 1 > limit then
    return 0
else
    -- 否则增加桶中的令牌数量，并设置过期时间
    redis.call('INCRBY', key, 1)
    redis.call('EXPIRE', key, expire)
    -- 返回当前令牌数量加 1
    return tokens + 1
end
